quartz: Factor out toplevel from NSEvent code into function
authorKristian Rietveld <kris@lanedo.com>
Sat, 5 Nov 2011 21:53:22 +0000 (22:53 +0100)
committerKristian Rietveld <kris@lanedo.com>
Sun, 6 Nov 2011 09:12:24 +0000 (10:12 +0100)
gdk/quartz/gdkevents-quartz.c

index cba9e4aa9c094545bc51c572d5dda35b8d8d3deb..22a8f285c51e296f3537c1f30d2ea964e5c372aa 100644 (file)
@@ -323,6 +323,29 @@ get_window_point_from_screen_point (GdkWindow *window,
   *y = window->height - point.y;
 }
 
+static GdkWindow *
+get_toplevel_from_ns_event (NSEvent *nsevent,
+                            NSPoint *screen_point,
+                            gint    *x,
+                            gint    *y)
+{
+  GdkQuartzView *view;
+  GdkWindow *toplevel;
+  NSPoint point;
+
+  view = (GdkQuartzView *)[[nsevent window] contentView];
+
+  toplevel = [view gdkWindow];
+
+  point = [nsevent locationInWindow];
+  *screen_point = [[nsevent window] convertBaseToScreen:point];
+
+  *x = point.x;
+  *y = toplevel->height - point.y;
+
+  return toplevel;
+}
+
 static GdkEvent *
 create_focus_event (GdkWindow *window,
                    gboolean   in)
@@ -652,20 +675,13 @@ find_window_for_ns_event (NSEvent *nsevent,
                           gint    *y_root)
 {
   GdkQuartzView *view;
-  NSPoint point;
+  GdkWindow *toplevel;
   NSPoint screen_point;
   NSEventType event_type;
-  GdkWindow *toplevel;
 
   view = (GdkQuartzView *)[[nsevent window] contentView];
-  toplevel = [view gdkWindow];
-
-  point = [nsevent locationInWindow];
-  screen_point = [[nsevent window] convertBaseToScreen:point];
-
-  *x = point.x;
-  *y = toplevel->height - point.y;
 
+  toplevel = get_toplevel_from_ns_event (nsevent, &screen_point, x, y);
   _gdk_quartz_window_nspoint_to_gdk_xy (screen_point, x_root, y_root);
 
   event_type = [nsevent type];